home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 May / com_0505_1.iso / opensource / top10 / amc_install.exe / {app} / Scripts / dvdempire.ifs < prev    next >
Encoding:
Text File  |  2004-07-01  |  6.0 KB  |  179 lines

  1. // GETINFO SCRIPTING
  2. // www.dvdempire.com - by dmitry501
  3. program From_dvdempire;
  4. var
  5.   MovieName: string;
  6.   MovieName2: string;
  7. // -------------------------------------------------------------------------------------------------------
  8. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  9. var
  10.   i: Integer;
  11. begin
  12.   result := -1;
  13.   if StartAt < 0 then
  14.     StartAt := 0;
  15.   for i := StartAt to List.Count-1 do
  16.     if Pos(Pattern, List.GetString(i)) <> 0 then
  17.     begin
  18.       result := i;
  19.       Break;
  20.     end;
  21. end;
  22. // -------------------------------------------------------------------------------------------------------
  23. function GetLines(Page: TStringList; LineNr: Integer): String;
  24. var Value, Line: String;
  25.     StartPos : Integer;
  26. begin
  27.   Value := '';
  28.   Line := Page.GetString(LineNr);
  29.   If Pos(' ',Line) > 0 Then Begin
  30.     Value := StringReplace(Line, 'ò', '');
  31.     HTMLDecode(Value);
  32.     HTMLRemoveTags(Value);
  33.     repeat
  34.       LineNr := LineNr + 1;
  35.       Line := Page.GetString(LineNr);
  36.       If Pos(' ',Line) > 0 Then Begin
  37.         Value := Value + ',' + StringReplace(Line, 'ò', '');
  38.         HTMLDecode(Value);
  39.         HTMLRemoveTags(Value);
  40.       end;
  41.     until Pos(' ',Line) < 1
  42.   end;
  43.   result := Trim(Value);
  44. end;
  45. // -------------------------------------------------------------------------------------------------------
  46. procedure GetInfo(Page: TStringList; ItemID: String);
  47. var Line, Value : String;
  48.     LineNR, StartPos : Integer;
  49. begin
  50.   // URL
  51.   SetField(fieldURL,'http://www.dvdempire.com/Exec/v4_item.asp?item_id=' + ItemID);
  52.   //Rating
  53.   LineNr := FindLine('<b>Rating:</b>', Page, 0);
  54.   if LineNr > -1 then
  55.   begin
  56.     Line := Page.GetString(LineNr+3);
  57.     StartPos := Pos('(<b>',Line)+4;
  58.     Value := copy(Line, StartPos, pos('</b>', Line) - StartPos);
  59.     SetField(fieldRating,Value);
  60.   end;
  61.   // Year
  62.   LineNr := FindLine('<b>Production Year:</b>', Page, 0);
  63.   if LineNr > -1 then
  64.   begin
  65.     Line := Page.GetString(LineNr);
  66.     StartPos := Pos('</b>',Line)+5;
  67.     Value := Copy(Line, StartPos,4);
  68.     SetField(fieldYear, Value);
  69.   end;
  70.   // Director
  71.   LineNr := FindLine('<b>Directors:</b>', Page, 0);
  72.   if LineNr > -1 then
  73.   begin
  74.     Value := GetLines(Page, LineNr+1);
  75.     SetField(fieldDirector, Value);
  76.   end;
  77.   // Producer
  78.   LineNr := FindLine('<b>Producers:</b>', Page, 0);
  79.   if LineNr > -1 then
  80.   begin
  81.     Value := GetLines(Page, LineNr+1);
  82.     SetField(fieldProducer, Value);
  83.   end;
  84.   // Actors
  85.   LineNr := FindLine('<b>Actors:</b>', Page, 0);
  86.   if LineNr > -1 then
  87.   begin
  88.     Value := GetLines(Page, LineNr+1);
  89.     SetField(fieldActors, Value);
  90.   end;
  91.    // Description
  92.   LineNr := FindLine('<b> Synopsis</b>', Page, 0);
  93.   if LineNr > -1 then
  94.   begin
  95.     Value := Page.GetString(LineNr + 16)+Page.GetString(LineNr + 17)+Page.GetString(LineNr + 18);
  96.     Value:=StringReplace(Value, '>i<', '> <');
  97.     HTMLDecode(Value);
  98.     HTMLRemoveTags(Value);
  99.     SetField(fieldDescription,Value);
  100.   end;
  101.   // Picture
  102.   Line := 'http://images.dvdempire.com/gen/movies/' + ItemID + 'h.jpg';
  103.   GetPicture(Line, False);
  104. end;
  105. // -------------------------------------------------------------------------------------------------------
  106. procedure AnalyzePage(Address: string);
  107. var
  108.   Page: TStringList;
  109.   LineNr, StartPos, EndPos, L: Integer;
  110.   Line: string;
  111.   ItemID, MovieAddress, MovieTitle : string;
  112. begin
  113.   PickTreeClear;
  114.   Page := TStringList.Create;
  115.   Page.Text := GetPage(Address);
  116.   LineNr := FindLine('<title>DVD Empire - Item -', Page, 0);
  117.   if LineNr >-1 then begin
  118.     LineNr := FindLine('item_id', Page, 0);
  119.     Line := Trim(Page.GetString(LineNr));
  120.     StartPos := pos('item_id=', Line) + 8;
  121.     ItemID := copy(Line, StartPos, pos('&tab=', Line) - StartPos);
  122.     GetInfo(Page,ItemID);
  123.   end else begin
  124.     LineNr := FindLine('Matches Found<br>', Page, 0);
  125.     if LineNr >-1 then begin
  126.       Line := Page.GetString(LineNr);
  127.       StartPos := pos('<b>', Line) + 3;
  128.       L := StrToInt('0'+ Copy(Line, StartPos, pos('</b>', Line) - StartPos),1);
  129.       PickTreeAdd(IntToStr(L)+' Matches found', '');
  130.       If L>0 Then begin
  131.         // Find Films
  132.           LineNr := FindLine('searchID=', Page, LineNr);
  133.           LineNr := LineNr + 1;
  134.         repeat
  135.           LineNr := FindLine('searchID=', Page, LineNr);
  136.           if LineNr >-1 then begin
  137.             Line := Trim(Page.GetString(LineNr));
  138.             LineNr := LineNr + 1;
  139.             If pos('<img src="', Line) <1 Then Begin
  140.               StartPos := pos('item_id=', Line) + 8;
  141.               ItemID := copy(Line, StartPos, pos('">', Line) - StartPos);
  142.               MovieAddress := 'http://www.dvdempire.com/Exec/v4_item.asp?item_id=' + ItemID;
  143.               StartPos := pos('">', Line) + 2;
  144.               MovieTitle := copy(Line, StartPos, 500);
  145.               HTMLDecode(Movietitle);
  146.               HTMLRemoveTags(MovieTitle);
  147.               PickTreeAdd(MovieTitle, MovieAddress);
  148.             end;
  149.           end;
  150.         until (LineNr <1 );
  151.       end;
  152.     end;
  153.     Page.Free;
  154.     if PickTreeExec(Address) then
  155.      begin
  156.       Page := TStringList.Create;
  157.       Page.Text := GetPage(Address);
  158.       ItemID :=copy(Address, 51, 8);
  159.       GetInfo(Page,ItemID);
  160.     end;
  161.   end;
  162.   DisplayResults;
  163. end;
  164. // -------------------------------------------------------------------------------------------------------
  165. // Begin program
  166. begin
  167.   PickListClear;
  168.   MovieName := GetField(fieldOriginalTitle);
  169.   if MovieName = '' then MovieName := GetField(fieldTranslatedTitle);
  170.   if Input('Import from www.dvdempire.com', 'Enter the title of the movie:', MovieName) then begin
  171.       MovieName2:=MovieName;
  172.       MovieName:=StringReplace(MovieName, 'Æ', Chr(39));
  173.       MovieName:=AnsiLowerCase(MovieName);
  174.       MovieName:=AnsiUpFirstLetter(MovieName);
  175.       if pos('The ', MovieName)=1 then MovieName:=StringReplace(MovieName, 'The ', '');
  176.       AnalyzePage('http://www.dvdempire.com/Exec/v5_search_item.asp?string='+UrlEncode(MovieName));
  177.   end
  178. end.
  179.